#ifndef GLSPRITES_H
#define GLSPRITES_H

#include <QGLWidget>
#include <QHash>
#include <QQueue>

#include <Phonon/AudioOutput>
#include <Phonon/MediaObject>

class GLWidget : public QGLWidget
{
    Q_OBJECT

public:
    GLWidget();
    ~GLWidget();
    void handleKeys(QKeyEvent* e, bool isPressed);  // metodas gauna ir  apdoroja mytukų paspaudimus
    void handleControls();                          // metodas tikrina ir skaičuoja pelės judėjimą
    int doLogic();                  // logikos veiksmai

public slots:
    void mousePressEvent(QMouseEvent* e);
    void mouseMoveEvent(QMouseEvent* e);
    void mouseReleaseEvent(QMouseEvent *e);

protected:
    void initializeGL();            // GL inicijavimo metodas
    void resizeGL(int w, int h);    // GL dydžio keitimo metodas
    void paintGL();                 // kadro piešimo metodas

private:
    GLuint texture[3];  // tekstūrų masyvas

    QHash<int,bool> Kh; // Mygtukų būsenų lentelė
    QQueue<int> Kq;     // Paspaustų mygtukų eilė
    QList<int> Kl;      // Papsaustų mygtukų sąrašas

    QHash<int,bool> Mh; // pelės mygtukų busenų lentelė
    QQueue<int> Mq;
    QList<int> Ml;

    int Mdx, Mdy;       // Pelės koordinačių pokytis
    int Mx, My;         // Pelės koordinatės lango atžvilgiu

    bool mouseLocked;   // ar pelė "pagauta"?
    void lockMouse();   // metodas "pagauna" pelę
    void unlockMouse(); // metodas "paleidžia" pelę

#define nSounds 4
    Phonon::AudioOutput *audioOutput[nSounds];
    Phonon::MediaObject *mediaObject[nSounds];


};


#endif // GLSPRITES_H
